#ifndef __M_CONSUMER_H__
#define __M_CONSUMER_H__
#include "../mqcommon/logger.hpp"
#include "../mqcommon/helper.hpp"
#include "../mqcommon/mq_msg.pb.h"
#include <iostream>
#include <unordered_map>
#include <mutex>
#include <memory>
#include <vector>
#include <functional>

//消费者信息结构
using ConsumerCallback = std::function<void(const std::string&, const mymq::BasicProperties* bp, const std::string&)>;
struct Consumer{
    using ptr = std::shared_ptr<Consumer>;
    std::string tag;   //消费者标识
    std::string qname; //消费者订阅的队列名称
    bool auto_ack;     //自动确认标志
    ConsumerCallback callback; //消息的处理回调函数(先被赋值（执行的函数）后传参调用)

    Consumer(){
        DLOG("new Consumer :%p",this);
    }
    Consumer(const std::string &ctag, const std::string &queue_name, bool ack_flag, const ConsumerCallback &cb):
            tag(ctag), qname(queue_name), auto_ack(ack_flag), callback(cb){
        DLOG("new Consumer :%p",this);
    }
    ~Consumer(){
        DLOG("delete Consumer :%p",this);
    }
};

#endif
